// priority_queue
// Created by FanGccU on 2025/6/22.
// 通过元素值大小进行排序的队列

#include <iostream>
#include <queue>
using namespace std;

void func() {
    priority_queue<int> pq;

    // 插入数据
    pq.push(10);
    pq.push(50);
    pq.push(30);
    pq.push(20);

    // 元素值越大的越靠前
    while (!pq.empty()) {
        cout << pq.top() << "\t";
        // 移除队首元素
        pq.pop();
    }
}

struct compare {
    bool operator()(const int a, const int b) const {
        return a > b;
    }
};

/**
 * 自定义排序
 */
void customFunc2() {
    // 调用 compare 自定义排序规则
    priority_queue<int, vector<int>, compare> pq;

    // 插入数据
    pq.push(10);
    pq.push(50);
    pq.push(30);
    pq.push(20);

    // 元素值根据规则进行排序
    while (!pq.empty()) {
        cout << pq.top() << "\t";
        // 移除队首元素
        pq.pop();
    }
}

int main(int argc, char *argv[]) {
    // func();
    customFunc2();
}
